import { Injectable } from '@angular/core';
import { HttpInterceptorService } from './http-utils.service';
import { CodeData } from '../bidding/openBid_management/service/openbid.service';
@Injectable()
export class CodeUtilsService {
  // 资源列表
  urlList = new Array(
    'main/bidding1',
    'main/bidding2',
    'main/bidding3',
    'main/bidding',
  );
  bidTypeYH = [
    { 'code': '', 'codeTypeName': '--请选择--' },
    { 'code': 120006001, 'codeTypeName': '公开招标' },
    { 'code': 120006002, 'codeTypeName': '邀请招标' }
  ];
  bidTypeF = [
    { 'code': '', 'codeTypeName': '--请选择--' },
    { 'code': 120006003, 'codeTypeName': '竞争性谈判' },
    { 'code': 120006004, 'codeTypeName': '询价采购' },
    { 'code': 120006005, 'codeTypeName': '单一来源' },
    { 'code': 120006006, 'codeTypeName': '网上竞价' }
  ];
  // 采购后审状态名称
  purprjStatusSourceHS = [
    { 'code': '', 'codeTypeName': '--请选择--' },
    { 'code': 130020001, 'codeTypeName': '采购项目创建' },
    { 'code': 130020002, 'codeTypeName': '分包进行中' },
    { 'code': 130020003, 'codeTypeName': '全部分标已提交' },
    { 'code': 130020004, 'codeTypeName': '全部标包确认' },
    { 'code': 130020006, 'codeTypeName': '部分分标生成招标文件' },
    { 'code': 130020007, 'codeTypeName': '全部分标生成招标文件' },
    { 'code': 130020008, 'codeTypeName': '招标公告（投标邀请书）已发布' },
    { 'code': 130020010, 'codeTypeName': '招标文件发售已截止' },
    { 'code': 130020011, 'codeTypeName': '招标文件发售已截止，正在投标' },
    { 'code': 130020012, 'codeTypeName': '已经截标，正在开标' },
    { 'code': 130020013, 'codeTypeName': '开标价格公示' },
    { 'code': 130020014, 'codeTypeName': '技术/商务等文件解密' },
    { 'code': 130020016, 'codeTypeName': '正在评标' },
    { 'code': 130020017, 'codeTypeName': '评标结束' },
    { 'code': 130020018, 'codeTypeName': '招标结束' },
    { 'code': 130020019, 'codeTypeName': '招标终止' },
    { 'code': 130020020, 'codeTypeName': '部分标包退回' },
    { 'code': 130020021, 'codeTypeName': '部分分标已提交' },
    { 'code': 130020022, 'codeTypeName': '部分分标撤回招标文件' },
    { 'code': 130020023, 'codeTypeName': '全部分标撤回招标文件' },
    { 'code': 130020024, 'codeTypeName': '生成完整招标文件' }
  ];
  // 采购预审状态名称
  purprjStatusSourceYS = [
    { 'code': '', 'codeTypeName': '--请选择--' },
    { 'code': 130020001, 'codeTypeName': '采购项目创建' },
    { 'code': 130020002, 'codeTypeName': '分包进行中' },
    { 'code': 130020003, 'codeTypeName': '全部分标已提交' },
    { 'code': 130020004, 'codeTypeName': '全部标包确认' },
    { 'code': 130020006, 'codeTypeName': '部分分标生成资格预审文件' },
    { 'code': 130020007, 'codeTypeName': '全部分标生成资格预审文件' },
    { 'code': 130020008, 'codeTypeName': '资格预审公告已发布' },
    { 'code': 130020010, 'codeTypeName': '资格预审文件发售已截止' },
    { 'code': 130020011, 'codeTypeName': '资格预审文件发售已截止，正在提交' },
    { 'code': 130020012, 'codeTypeName': '已到截止时间，正在开启' },
    // {'code': 130020013, 'codeTypeName': '开标价格公示'},
    { 'code': 130020014, 'codeTypeName': '技术/商务等文件解密' },
    { 'code': 130020016, 'codeTypeName': '正在评审' },
    { 'code': 130020017, 'codeTypeName': '评审结束' },
    { 'code': 130020018, 'codeTypeName': '资格预审评审结束' },
    { 'code': 130020019, 'codeTypeName': '资格预审终止' },
    { 'code': 130020020, 'codeTypeName': '部分标包退回' },
    { 'code': 130020021, 'codeTypeName': '部分分标已提交' },
    { 'code': 130020022, 'codeTypeName': '部分分标撤回招标文件' },
    { 'code': 130020023, 'codeTypeName': '全部分标撤回招标文件' },
    { 'code': 130020024, 'codeTypeName': '生成完整招标文件' }
  ];
  // 采购非招标状态名称
  purprjStatusSourceFZB = [
    { 'code': '', 'codeTypeName': '--请选择--' },
    { 'code': 130020001, 'codeTypeName': '采购项目创建' },
    { 'code': 130020002, 'codeTypeName': '分包进行中' },
    { 'code': 130020003, 'codeTypeName': '全部分标已提交' },
    { 'code': 130020004, 'codeTypeName': '全部标包确认' },
    { 'code': 130020006, 'codeTypeName': '部分分标生成采购文件' },
    { 'code': 130020007, 'codeTypeName': '全部分标生成采购文件' },
    { 'code': 130020008, 'codeTypeName': '采购公告（采购邀请函）已发布' },
    { 'code': 130020010, 'codeTypeName': '采购文件发售已截止' },
    { 'code': 130020011, 'codeTypeName': '采购文件发售已截止，正在提交' },
    { 'code': 130020012, 'codeTypeName': '已到截止时间，正在开启' },
    // {'code': 130020013, 'codeTypeName': '开标价格公示'},
    { 'code': 130020014, 'codeTypeName': '技术/商务等文件解密' },
    { 'code': 130020016, 'codeTypeName': '正在评审' },
    { 'code': 130020017, 'codeTypeName': '评审结束' },
    { 'code': 130020018, 'codeTypeName': '采购结束' },
    { 'code': 130020019, 'codeTypeName': '采购终止' },
    { 'code': 130020020, 'codeTypeName': '部分标包退回' },
    { 'code': 130020021, 'codeTypeName': '部分分标已提交' },
    { 'code': 130020022, 'codeTypeName': '部分分标撤回招标文件' },
    { 'code': 130020023, 'codeTypeName': '全部分标撤回招标文件' },
    { 'code': 130020024, 'codeTypeName': '生成完整招标文件' }
  ];

  constructor(private http: HttpInterceptorService) { }
  getStatus(): Array<CodeData>{
    const procType = this.getProcType();
    if(procType === 1 ) {
      return this.purprjStatusSourceHS;
    } else if(procType === 2) {
      return this.purprjStatusSourceYS;
    }else{
      return this.purprjStatusSourceFZB;
    }
  }
  /**
   *
   * 获取码值
   * @param code 传入码值对应的code获取相应码值
   */
  getSelectData(code: string) {
    let params = { 'codeTypeName': code };
    let url = 'v1/api/prjsetup/purchase/code';
    return this.http.request({
      method: 'post',
      url: url,
      data: params
    });
  }

  /**
   * 前后端连通获取下拉表数据
   * @param url
   */
  getCode(url, params) {
    return this.http.request({
      method: 'post',
      url: url,
      data: params
    });
  }

  /**
   * 评标工程调code
   * @param {string} code
   * @returns {any}
   */
  getSelectDataFromEvabid(code: string) {
    let params = { 'codeTypeName': code };
    let url = 'v1/api/pe/purscore/code';
    return this.http.request({
      method: 'post',
      url: url,
      data: params
    });
  }

  /**
   * 根据codeTypeId查询下拉列表
   * @param codeTypeId
   */
  getCodeList(codeTypeId) {
    let params = {};
    let url = 'v1/api/prjsetup/purchase/code/' + codeTypeId;
    return this.http.request({
      method: 'post',
      url: url,
      data: params
    });
  }

  /**
   * 根据codeTypeId查询下拉列表
   * @param codeTypeId
   */
  getCodeNoDefaultList(codeTypeId) {
    let params = {};
    let url = 'v1/api/prjsetup/purchase/code/no-default-val/' + codeTypeId;
    return this.http.request({
      method: 'post',
      url: url,
      data: params
    });
  }

  /**
   * 删除列表中code为空的记录
   * @since 20180406dangkp
   * @param rows
   */
  delBlankCode(rows: Array<any>) {
    let result = new Array<any>();
    // 遍历
    for (let i = 0; i < rows.length; i++) {
      // 获取当前code
      let codeTypeName = rows[i]["codeTypeName"];
      if (undefined != codeTypeName && "--请选择--" != codeTypeName) {
        // 添加到列表
        result.push(rows[i]);
      }
    }
    // 返回
    return result;
  }

  /**
 * 获取当前url
 */
  public biddingUrl() {
    // 获取当前路径
    let urlNow = window.location.href;
    // 遍历
    for (let index = 0; index < this.urlList.length; index++) {
      // 获取当前url
      let url = this.urlList[index];
      if (urlNow.indexOf(url) > 0) {
        // 非招标
        return url;
      }
    }
  }

  /**
   * 判断当前是1、2还是3
   */
  public getProcType() {
    // 获取当前路径
    let urlNow = window.location.href;
    // 包含特殊字符
    // 遍历
    // for (let index=0; index < this.urlList.length; index++) {
    // 20180802
    for (let index = 0; index < this.urlList.length; index++) {
      // 获取当前url
      let url = this.urlList[index];
      if (urlNow.indexOf(url) > 0) {
        //如果从urlList匹配到url，index应该返回1，因为urlList中的第四个为资格后审
        if (index === 3) {
          return 1;
        }
        // 非招标
        return index + 1;
      }
    }
    // 20180802
    return 1;
  }

  /**
     * 从路由的路径中获取当前入口，识别是资格后审、预审、还是非招标进来的，获取对应的采购项目状态翻译管道
     * @param type 
     */
  getPurprjStatusPipeFromType(type: number): string {
    if (type === 1) {
      return 'purprjStatus';
    }
    if (type === 2) {
      return 'purprjStatusYS';
    }
    if (type === 3) {
      return 'purprjStatusFZB';
    }
  }
  /**
   * 获取当前项目类型前缀, 返回 招标, 采购, 资格预审
   * 20191106 lijinfei add
   */
  getProcPrefix(){
    return (this.getProcType() == 3 ? '采购' : (this.getProcType() == 2 ? '资格预审' : '招标'));
  }
  getFilePrefix(){
    return (this.getProcType() == 3 ? '应答' : (this.getProcType() == 2 ? '资格预审' : '招标'));    
  }
}
